package com.ruoyi.center.service.impl;

import java.util.List;
import org.springframework.stereotype.Service;
import com.ruoyi.center.mapper.NoticeCenterMapper;
import com.ruoyi.center.domain.NoticeCenter;
import com.ruoyi.center.domain.Staticis;
import com.ruoyi.center.service.INoticeCenterService;
import com.basic.service.impl.BaseServiceImpl;
import com.param.IAlreadyRead;

/**
 * 通知中心Service业务层处理
 * 
 * @author 王强
 * @date 2024-01-23
 */
@Service
public class NoticeCenterServiceImpl extends BaseServiceImpl<Long, NoticeCenter> implements INoticeCenterService 
{
	
	/**
	 * 团队通知信息
	 */
	private static String[] teamNotices = new String[] {
			"您的团队签约审核已通过，快去添加团队成员吧",
			"您的团队签约审核未通过，审核原因："
	};
	
	@Override
	protected Class<NoticeCenter> getEntityClass() {
		// TODO Auto-generated method stub
		return NoticeCenter.class
				;
	}

	
	

	@Override
	protected NoticeCenter[] getEntityObject(int size) {
		// TODO Auto-generated method stub
		return new NoticeCenter[size];
	}




	@Override
	public int rewardNotification(int assocId, int userId, String content) {
		
		NoticeCenter mgNotice = new NoticeCenter();
		
		mgNotice.setTitle("奖励通知");
		
		mgNotice.setJump((byte) 1);
		
		mgNotice.setUserId(userId);
		
		mgNotice.setTypeId(assocId);
		
		mgNotice.setTranslateType((byte) 0);
		
		mgNotice.setAdminId(0);
		
		mgNotice.setNoticeType(4);
		
		mgNotice.setNoticeContent(content);
		
		
		
		return this.insert(mgNotice);
	}
	
	
	 @Override
	protected void afterParseInsert(NoticeCenter data) {
		
		 insertProperties(data);
	}


	/**
     * 团队审核通知
     */
	@Override
	public int teamNoticed(int type, int assocId, int userId, String verfiy) {
		
		NoticeCenter mgNotice = new NoticeCenter();
		
		int index = type - 1;
		
		if (index > 1) {
			throw new IllegalArgumentException("通知类型索引过大");
		}
		
		String content = teamNotices[index];
		
		if (1 == index) {
			content += verfiy;
		}
		
		mgNotice.setTitle("团队签约通知");
		
		mgNotice.setJump((byte) 1);
		
		mgNotice.setUserId(userId);
		
		mgNotice.setTypeId(assocId);
		
		mgNotice.setTranslateType((byte) 0);
		
		mgNotice.setAdminId(0);
		
		mgNotice.setNoticeType(3);
		
		mgNotice.setNoticeContent(content);
		
		insertProperties(mgNotice);
		
		return this.insert(mgNotice);
	}
	
	
    public NoticeCenterServiceImpl(NoticeCenterMapper baseMapper) {
		super(baseMapper);
		// TODO Auto-generated constructor stub
	}
    /**
     * 查询通知中心
     * 
     * @param id 通知中心主键
     * @return 通知中心
     */
    @Override
    public NoticeCenter selectById(Integer id)
    {
        return baseMapper.selectById(id);
    }

    /**
     * 查询通知中心列表
     * 
     * @param noticeCenter 通知中心
     * @return 通知中心
     */
    @Override
    public List<NoticeCenter> selectList(NoticeCenter noticeCenter)
    {
        return baseMapper.selectList(noticeCenter);
    }

    /**
     * 新增通知中心
     * 
     * @param noticeCenter 通知中心
     * @return 结果
     */
    @Override
    public int insert(NoticeCenter noticeCenter)
    {
    	insertProperties(noticeCenter);
//        noticeCenter.setCreateTime(DateUtils.getNowDate());
        return baseMapper.insert(noticeCenter);
    }

    /**
     * 修改通知中心
     * 
     * @param noticeCenter 通知中心
     * @return 结果
     */
    @Override
    public int update(NoticeCenter noticeCenter)
    {
//        noticeCenter.setUpdateTime(DateUtils.getNowDate());
        return baseMapper.update(noticeCenter);
    }

    /**
     * 批量删除通知中心
     * 
     * @param ids 需要删除的通知中心主键
     * @return 结果
     */
    @Override
    public int deleteByIds(Integer[] ids)
    {
        return baseMapper.deleteByIds(ids);
    }

    /**
     * 删除通知中心信息
     * 
     * @param id 通知中心主键
     * @return 结果
     */
    @Override
    public int deleteById(Integer id)
    {
        return baseMapper.deleteById(id);
    }
	@Override
	public List<Staticis> getStaticisList(NoticeCenter noticeCenter) {
		
		NoticeCenterMapper centerMapper = this.getBaseMapper();
		
		return centerMapper.statics(noticeCenter);
	}


	@Override
	public int allAlreadRead(NoticeCenter alreadyRead) {
		NoticeCenterMapper centerMapper = this.getBaseMapper();
		return centerMapper.allAlreadRead(alreadyRead);
	}
}